home *** CD-ROM | disk | FTP | other *** search
/ The 640 MEG Shareware Studio 2 / The 640 Meg Shareware Studio CD-ROM Volume II (Data Express)(1993).ISO / clang / nn.zip / MK_ONLIN.E_M < prev    next >
Text File  |  1989-12-31  |  2KB  |  144 lines

  1. # convert a manual to a folder
  2.  
  3. sed     -e 's/\\f[BPI]//g' \
  4.     -e 's/\\-/-/g' \
  5.     -e 's/\\&//' \
  6.     -e '/^\.\\" /d' \
  7.     -e '/^\.nf/d' \
  8.     -e '/^\.fi/d' \
  9.     -e '/^\.if/d' \
  10.     -e '/^\.ta/d' \
  11.     -e '/^\.nr/d' \
  12.     -e '/^\.in/d' \
  13.     -e 's/^\.[BI] //' "$@" |
  14. awk '
  15. BEGIN {
  16.     l=""
  17.     o=""
  18.     m=72
  19.     a=0
  20.     h=""
  21.     t=0
  22.     tab=sprintf("%c",9)
  23. }
  24. /^\.SH / {
  25.     if (a) printf("%s\n\n", l)
  26.     a++
  27.     l=o=""
  28.     z=u=0
  29.     printf("From: %s\nSubject:", h);
  30.     for (i = 2; i <= NF; i++) printf(" %s", $i);
  31.     printf("\n\n");
  32.     next
  33. }
  34. /^\.TH / {
  35.     h=$2
  36.     next
  37. }
  38. /^\.UC / {
  39.     next
  40. }
  41. /^\.br/ {
  42.     if (l != o) printf("%s\n", l)
  43.     l=o
  44.     z=u
  45.     next
  46. }
  47. /^\.PP/ {
  48.     if (l != o) printf("%s\n", l)
  49.     printf("\n")
  50.     l="   "
  51.     z=3
  52.     o=""
  53.     u=0
  54.     next
  55. }
  56. /^\.LP/ || /^\.sp/ {
  57.     if (l != o) printf("%s\n", l)
  58.     printf("\n")
  59.     l=""
  60.     o=""
  61.     z=u=0
  62.     next
  63. }
  64. /^\.TP/ {
  65.     if (l != o) printf("%s\n", l)
  66.     printf("\n")
  67.     getline
  68.     l=$0
  69.     z=u=5
  70.     o="     "
  71.     if (length(l) >= 5) {
  72.         printf("%s\n", l)
  73.         l=o
  74.     } else while (length(l) < 4) l=l " "
  75.     next
  76. }
  77. /^\.\\"ta/ {
  78.     for (t=2; t <= NF; t++) to[t-1] = $t
  79.     t=NF
  80.     next
  81. }
  82. /^\.DT/ {
  83.     t=0
  84.     next
  85. }
  86. t != 0 {
  87.     j=length($0)
  88.     k=0; g=1
  89.     for (i=1; i<=j; i++) {
  90.         while (k < to[g]) {
  91.             printf(" ")
  92.             k++
  93.         }
  94.         c=substr($0,i,1)
  95.         if (c == tab) {
  96.             g++
  97.         } else {
  98.             printf("%s", c)
  99.             k++
  100.         }
  101.     }
  102.     printf("\n")
  103.     next
  104. }    
  105. {
  106.     s=1
  107.     p=" "
  108.     q=1
  109. }
  110. /^[     ]/ {
  111.     if (l != o) printf("%s\n",l)
  112.     l=o "     "
  113.     z=u+5
  114. }
  115. /^\.[IB] / {
  116.     s=2
  117. }
  118. /^\.[IB]R / {
  119.     s=2
  120.     p=""
  121.     q=0
  122. }
  123. {
  124.     r=" "
  125.     while (s <= NF) {
  126.         k=length($s)
  127.         if ((z+k) > m) {
  128.             printf("%s\n", l)
  129.             l=o
  130.             z=u
  131.         }
  132.         if (l != o)
  133.             l=l r $s
  134.         else
  135.             l=l $s
  136.         z=z + q + k
  137.         r=p
  138.         s++
  139.     }
  140. }
  141. END {
  142.     if (l != o) printf("%s\n\n", l)
  143. }'
  144.